import { Injectable } from '@angular/core';
import { Observable } from "rxjs";//js库

@Injectable({
  providedIn: 'root'
})
export class CommonService {

  constructor() { }

  ///回调函数
  getDatacb(cb){
      setTimeout(()=>{
        cb('getCBdata')
      },1000)
  }
//promise获取
  getPromise(){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
          resolve('张三----promise');
          // resolve('张三----promise1');
          // resolve('张三----promise2');
        },1000)
    })
  }
//3. rxjs获取异步数据
  geRxjstData(){
      return new Observable(observer=>{
        setTimeout(()=>{
            var username = '小明 -- rxjs'
            observer.next(username);
        },3000)
      })
  }
  //4.  rxjs多次执行
  getRxIntervalData(){
    return new Observable(observer=>{
      var count=0;
      setInterval(()=>{
        count++;
        var username = '小明 --rxjs-Interval'
          observer.next(username + count);
      },1000)
    })

  }


  // promise : 不具备撤回 ， 以及 多次执行， 但是Rxjs具备
  streamFun(){
    return  new Observable<any>(observer => {
      let count = 0;
      setInterval(() => {
        observer.next(count++);
      }, 1000);
    });
  }



  
}
